package cn.sxt.oop;

/**
 * 抽象类的意义：为子类提供统一的、规范的模板。子类必须实现相关的抽象方法！
 */
public abstract class Animal {
    /**
     * 抽象方法必须写在抽象类中
     */
    abstract public void shout();

    public void run(){
        System.out.println("跳跳跳！");
    }

    public static void main(String[] args){
        //抽象类可以被用作属性 但不能被new
        Animal ani = new Dog();
        ani.run();
    }
}

class Dog extends Animal{

    /**
     * 继承了抽象类要实现该类的抽象方法
     */
    @Override
    public void shout() {
        System.out.println("fuck!");
    }
}
